﻿#ifndef _PROGRESS__H_
#define _PROGRESS__H_


#include "kernel/string_def.h"
#include "udatabase/dll_cfg.h"
#include "kernel/OgrePlatform.h"

namespace FD
{
	namespace Utility
	{
		namespace DB
		{
			//////进度条相关信息函数
#ifdef __cplusplus
			/*		extern "C" 
			{*/
#endif//////__cplusplus
			typedef int(__stdcall *gsProgressFunc)(double dfComplete ,const char *pszMessage, void *pProgressArg);
			/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
#ifdef __OS_WIN__
			INT32 __declspec(dllexport) __stdcall gsTermProgress(  double dfComplete,  const CHAR *pszMessage,  void *pProgressArg);
#else
			FD_DB_Export INT32  gsTermProgress(  double dfComplete,  const CHAR *pszMessage,  void *pProgressArg);
#endif
#ifdef __cplusplus
			//}
#endif///////__cplusplus


			/************************************************************************/
			/*   CProgressInfo                                                       */
			/************************************************************************/
			///<summary>
			///CProgressInfo
			///进度条对象
			///</summary>
			class FD_DB_Export CProgressInfo: public FD::Kernel::CReferenced
			{
			public:
				///<summary>
				///默构造函数
				/// </summary>
				CProgressInfo();
				///<summary>
				///默认析构函数
				/// </summary>
				~CProgressInfo();
				///<summary>
				///获取已完成百分比
				/// </summary>
				///<returns>已经完成百分比</returns>
				const double getPercent()const;
				///<summary>
				///获取执行期间信息
				/// </summary>
				///<returns>期间信息</returns>
				const String    getMessage()const;

				///<summary>
				///设置完成百分比
				/// </summary>
				/// <param name="dfPercent">百分比</param>

				void setPercent( double dfPercent);
				///<summary>
				///设置执行期间相关信息
				/// </summary>
				/// <param name="dfPercent">期间信息</param>
				void setMessage( const String &strMessage);
				///<summary>
				///使进度条类回到初始状态
				/// </summary>
				void reset();
			private:
				double m_dfPercent; ///百分比
				String    m_strMessage;///执行期间相关信息
			};
		}
	}
}
#endif
